package com.tmsps.ne4weixin.api;

import java.util.List;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.tmsps.ne4weixin.bean.BaseResultBean;
import com.tmsps.ne4weixin.bean.message.template.Template;
import com.tmsps.ne4weixin.bean.message.template.TemplateMessage;
import com.tmsps.ne4weixin.bean.message.template.result.ResultBean;
import com.tmsps.ne4weixin.config.WxConfig;
import com.tmsps.ne4weixin.utils.WXHttpUtil;

import lombok.extern.slf4j.Slf4j;

/**
 * @Title: TemplateAPI.java
 * @Package: com.tmsps.ne4weixin.api
 * @Description: 模板消息管理API
 * @author: hanjiefei
 * @date: 2019-10-22
 * @version V1.0
 * @Copyright: 2019 
 */
@Slf4j
public class TemplateAPI extends BaseAPI {

	public TemplateAPI(WxConfig config) {
		super(config);
	}
	
	/**
	 * 获得模板ID
	 * @param template_id_short	模板库中模板的编号，有“TM**”和“OPENTMTM**”等形式
	 * @return
	 */
	public ResultBean getTemplateIdObj(String template_id_short) {
		String templateId = getTemplateId(template_id_short);
		return JSONObject.parseObject(templateId, ResultBean.class);
	}
	
	/**
	 * 获得模板ID
	 * @param template_id_short	模板库中模板的编号，有“TM**”和“OPENTMTM**”等形式
	 * @return
	 */
	public String getTemplateId(String template_id_short) {
		String url = String.format(TEMPLATE_GET_ID,wxConfig.getAccessToken());
		JSONObject param = new JSONObject();
		param.put("template_id_short", template_id_short);
		return WXHttpUtil.postJson(url, param.toJSONString());
	}
	
	/**
	 * 获取模板列表
	 * @return
	 */
	public List<Template> getTemplateList() {
		String url = String.format(TEMPLATE_GET_LIST,wxConfig.getAccessToken());
		String result = WXHttpUtil.get(url);
		JSONObject obj = JSONObject.parseObject(result);
		log.info("获取模板列表返回信息：{}",result);
		return JSON.parseArray(obj.getString("template_list"), Template.class);
	}
	
	/**
	 * 删除模板
	 * @param template_id	公众帐号下模板消息ID
	 * @return
	 */
	public BaseResultBean deleteTemplate(String template_id) {
		String url = String.format(TEMPLATE_DEL,wxConfig.getAccessToken());
		JSONObject param = new JSONObject();
		param.put("template_id", template_id);
		String result = WXHttpUtil.postJson(url, param.toJSONString());
		log.info("删除模板返回信息：{}",result);
		return JSONObject.parseObject(result, BaseResultBean.class);
	}
	
	/**
	 * 发送模板消息
	 * @param message
	 * @return 
	 */
	public String sendMessage(TemplateMessage message) {
		String url = String.format(TEMPLATE_SEND_MSG,wxConfig.getAccessToken());
		return WXHttpUtil.postJson(url, JSONObject.toJSONString(message));
	}
}
